Rendering and image processing at resolutions typical in printing may consume considerable time and computational resources, including memory. Generally, these processes may be divided into two categories: geometrical processing and pixel-value processing. Geometrical processing may change the position of a pixel. Exemplary geometrical processing may comprise rendering of vector graphics and glyphs, enlargement or reduction of images, clipping or overlapping of images, which may cut out pixels, and affine transformations, for example, rotation. Pixel-value processing may change the value of a pixel, also considered the pixel value. Exemplary pixel-value processing may comprise color correction, filter processing, half toning, compression and other image processing techniques.
Typically, geometrical processing methods require a memory buffer comprising memory for all of the pixels, also considered a surface. The surface is accessed one pixel at a time in a non-linear fashion. Surface access may become a limiting factor in performance, particularly in applications that require large amounts of memory. This may be understood in relation to FIG. 1 and FIG. 2.
FIG. 1 depicts an exemplary portion of a document 2, or image, which may be printed. This exemplary portion 2 consists of three graphics elements: a rectangle 4, a circle 6 and a triangle 8. Different shading of these elements in FIG. 1 indicates a different fill for each of these graphics elements 4, 6, 8. Exemplary fills may comprise a gradient fill, a solid fill, a patterned fill, a bitmap fill, a translucency-based fill, a raster operation (ROP) based fill and other types of graphics fills. The fill of each graphics object need not be distinct from the fills of the other objects, but the fills are shown as distinct for clarity in this example. The graphics objects may be defined in a first order by the application that generates the document 2, or image. For this example, by way of illustration and not limitation, consider the order: rectangle 4, circle 6 and triangle 8. The graphics may be processed in the order in which the graphics are defined in the generating application, also considered the z-order. In this situation, the exemplary portion 2 may be rendered according to the following, as depicted in FIGS. 2a-2f. 
First, shown in FIG. 2a, a rectangular object stencil 10 may be generated corresponding to the rectangle 4. The object stencil 10 maps the object to pixels in the document. A person of ordinary skill in the art can appreciate the numerous ways of indicating such a mapping. Exemplary mappings may comprise an edge list, a pixel mask, a parametric shape description and other mappings. Next, as shown in FIG. 2b, the corresponding region 12 in a memory buffer 11, also considered a surface, may be filled according to the graphics object, thereby rendering the first graphics object 4. The rectangular stencil 10 may be discarded, because it is no longer required in the rendering process.
A second stencil 14, as shown in FIG. 2c, may be generated corresponding to the next graphics object, the circle 6. Then, as shown in FIG. 2d, the corresponding region 16 in the memory buffer 11 may be filled according to the graphics object, thereby rendering the second graphics object 6. Pixels common to both the rectangle 4 and the circle 6 have been rendered twice at this point. The second stencil 14 may be discarded, because it is no longer required in the rendering process.
A third stencil 18, as shown in FIG. 2e, may be generated for the next graphics object, the triangle 8. As shown in FIG. 2f, the corresponding region 20 in the memory buffer 11 may be filled according to the graphics object, thereby rendering the thirds graphics object 8. Pixels common to the rectangle 4, the circle 6 and the triangle 8 have been rendered three times at this point. The third stencil 18 may be discarded, because it is no longer required in the rendering process. The pixels in the memory buffer have been accessed multiple times in a non-linear order in order to render the graphics objects by serially generating and processing each object stencil.
Some of the image processing steps necessary for printing may vary depending on the combination of graphics (for example, overlapping transparency fills or ROP fills). Rendering data for printing may involve a color-space conversion from the original color space in which the image was created (for example, an RGB color space adjusted for the input device) to an ink color space of the printer (for example, CMYK). If there are translucencies or ROP operations, the print objects must be converted to a standard color space first (for example, sRGB), combined, and only then can the resulting value be converted to the ink color space of the printer.
Some print-data rendering methods may split a surface into bands to deal with the memory constraints. Alternatively, some methods may render into a half-tone space directly, where, for example, a typical half-tone space is one-eighth the size of a corresponding RGB space.
Additional pixel-value processing is typically performed on the surface used for rendering. Memory requirement and memory access constraints may also limit performance of pixel-value processing methods.
Reducing, or eliminating, the requirement of large surfaces and avoiding the bottleneck of memory access may be advantageous in rendering and image processing in printing. Also, avoiding re-filling, or re-rendering, a pixel may be advantageous. Also, avoiding double color-space conversions when not necessary on a pixel may be advantageous.